/**
 * 
 */
package com.bbva.gptf.back.transformador;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.convert.converter.Converter;

import com.bbva.gptf.back.dominio.Tgpt029OrdCapital;
import com.bbva.gptf.back.dominio.Tgpt030DetOrdCap;
import com.bbva.gptf.dto.bean.DetalleOrden;
import com.bbva.gptf.dto.bean.Orden;

/**
 * @author mtellezg
 * 
 */
public class TransformadorOrdenCapital implements
		Converter<Tgpt029OrdCapital, Orden> {

	@Autowired
	private TransformadorDetalleOrdenCapital transformadorDetalleOrdenCapital;

	@Autowired
	private TransformadorGestor transformadorGestor;

	@Override
	public Orden convert(final Tgpt029OrdCapital source) {
		// TODO Auto-generated method stub
		final Orden orden = new Orden();
		orden.setCdOrden(source.getCdOrdenCapital());
		orden.setCdGestor(source.getCdGestor().getCdUsuario());
		orden.setCdValorBmv(source.getCdValorBmv());
		orden.setCdEmisora(source.getCdEmisora());
		orden.setCdSerie(source.getCdSerie());
		orden.setFhOperacion(source.getFhOperacion());
		orden.setTpOperacion(source.getTpOperacion());
		orden.setCtTitulo(source.getCtTitulo());
		orden.setImPrecio(source.getImPrecio());
		orden.setToImporte(source.getToImporte());
		orden.setPcTasa(source.getPcTasa());
		orden.setCtTituloPost(source.getCtTituloPost());
		orden.setImPrecioPost(source.getImPrecioPost());
		orden.setToImportePost(source.getToImportePost());
		orden.setPcTasaPost(source.getPcTasaPost());
		orden.setTxJustificacion(source.getTxJustificacion());
		orden.setStValidPolitica(source.getStValidPolitica());
		orden.setStOrden(source.getStOrden());
		orden.setTmUmo(source.getTmUmo());
		orden.setFhUmo(source.getFhUmo());
		orden.setCdUsuarioUmo(source.getCdUsuarioUmo());
		List<DetalleOrden> listaDetalle = new ArrayList<DetalleOrden>();
		List<Tgpt030DetOrdCap> it = Tgpt030DetOrdCap.obtenerDetallesOrdenCapital(source.getCdOrdenCapital());
		for(Tgpt030DetOrdCap ord : it) {
			DetalleOrden detalleOrden = transformadorDetalleOrdenCapital
					.convert(ord);
			listaDetalle.add(detalleOrden);
		}
		orden.setDetallesOrden(listaDetalle);
		if (source.getCdGestor() != null) {
			orden.setGestor(transformadorGestor.convert(source.getCdGestor()));
		}
		return orden;
	}

	public void setTransformadorDetalleOrdenCapital(
			TransformadorDetalleOrdenCapital transformadorDetalleOrdenCapital) {
		this.transformadorDetalleOrdenCapital = transformadorDetalleOrdenCapital;
	}

	public void setTransformadorGestor(TransformadorGestor transformadorGestor) {
		this.transformadorGestor = transformadorGestor;
	}

}
